import static org.junit.Assert.assertEquals;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.util.Vector;

public class TestMazo_pedidosImpl {
	Mazo_pedidos pedidos;
	
	@Before
	public void setUp () {
		pedidos=new Mazo_pedidosImpl();
		pedidos.preparar();
		
	}
	@After
	public void tearDown(){		
		pedidos=null;		
	}
	
	@Test
	public void testsacar_pedido(){
		C_pedido pedido;
		pedido=pedidos.sacar_pedido();
		assert pedido instanceof C_pedido;
	}
	@Test
	public void testdescartarYgetNumDescartes(){
		assert pedidos.getNumDescartes()==0;
		pedidos.descartar();
		assert pedidos.getNumDescartes()==1;
		pedidos.descartar();
		assert pedidos.getNumDescartes()==2;
	}
	
	
	@Test(expected = java.lang.ArrayIndexOutOfBoundsException.class)
	public void testsacar_pedido2 (){
		Mazo_pedidos peds;
		peds=new Mazo_pedidosImpl();
		peds.sacar_pedido();
	}
	
	
	@Test
	public void testpreparar (){		//comprueba que preparar añade correctamente productos
		Mazo_pedidos peds;				//y no lanza una excepcion como ocurre arriba
		peds=new Mazo_pedidosImpl();
		peds.preparar();
		assert peds.sacar_pedido() instanceof C_pedido;
	}
	
	@Test 
	public void testadd_pedidoYget_pedidos(){
		Mazo_pedidos peds=new Mazo_pedidosImpl();
		C_pedido ped1,ped2,ped3;
		Vector <C_pedido> pedidos =new Vector<C_pedido>();
		ped1=new C_pedidoImpl(4,null);
		ped2=new C_pedidoImpl(3,null);
		ped3=new C_pedidoImpl(2,null);
		peds.add_pedido(ped1);
		peds.add_pedido(ped2);
		peds.add_pedido(ped3);
		pedidos.add(ped1);
		pedidos.add(ped2);
		pedidos.add(ped3);
		assertEquals (pedidos,peds.get_pedidos());
	}
}